package cn.demoncat.util.lang.entity.tree;

import java.util.List;

/**
 * 树型数据
 *
 * 1、实现本接口
 * 2、调用TreeUtil完成树型处理（树型处理不会乱序，所以有序树应先自行排序）
 *
 * @author 延晓磊
 * @since 2021年11月16日
 */
public interface TreeEntity<T,P> {

    /**
     * 获取ID
     */
    P getId();

    /**
     * 获取父ID
     */
    P getParentId();

    /**
     * 获取子节点
     */
    List<T> getChildren();

    /**
     * 设置子节点
     */
    void setChildren(List<T> children);

    /**
     * 获取排序
     */
    default <S extends Comparable<S>>S getSort(){
        return null;
    }

    /**
     * 获取名称
     */
    default String getName(){
        return null;
    }

    /**
     * 设置名称
     */
    default void setName(String name){

    }

    /**
     * 获取标题（全名）
     */
    default String getTitle(){
        return null;
    }

    /**
     * 设置标题（全名）
     */
    default void setTitle(String title){

    }

    /**
     * 获取树型ID（拼接ID）
     */
    default String getTreeId(){
        return null;
    }

    /**
     * 设置树型ID（拼接ID）
     */
    default void setTreeId(String title){

    }

    /**
     * 设置选中
     *
     * @param checked 1是，0否
     */
    default void setChecked(int checked){

    }

}
